package com.diaohaiwen.common.obj.log;

import lombok.Data;
import lombok.experimental.Accessors;

import java.time.LocalDateTime;

/**
 * @author 刁海文
 * @since 2023/6/28 21:47
 * @Remark 日志基类
 */
@Data
@Accessors(chain = true)
public class BaseLog<T> {

    /**
     * 服务名称
     */
    private String applicationName;

    /**
     * 本机IP
     */
    private String ip;
    /**
     * 请求链路ID
     */
    private String requestId;
    /**
     * 链路ID，默认为1
     */
    private int linkId;

    /**
     * 登录账户名称
     */
    private String loginName;
    /**
     * 登录账户ID
     */
    private String loginId;

    /**
     * 状态
     */
    private int status;

    /**
     * 消息提示
     */
    private String msg;

    /**
     * 日志生成时间
     */
    private LocalDateTime logTime;


    //         // 获取 Main 的超类 SuperClass 的签名(携带泛型). 这里为: xxx.xxx.xxx.SuperClass<xxx.xxx.xxx.User>
    //        Type genericSuperclass = BaseLog.class.getGenericSuperclass();
    //        // 强转成 参数化类型 实体.
    //        ParameterizedType parameterizedType = (ParameterizedType) genericSuperclass;
    //        System.out.println(parameterizedType);
    //
    //        // 获取超类的泛型类型数组. 即SuperClass<User>的<>中的内容, 因为泛型可以有多个, 所以用数组表示
    //        Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();
    //        Type genericType = actualTypeArguments[0];
    //        clazz = (Class<T>) genericType;
    //        System.out.println(clazz);
}
